#ifndef xfor_vscode_hint // 优化智能提示

// 注意：============================================================================
// 如果你没有把握，不要在全局创建异步线程。避免 GC 退出时，异步线程的资源还没有释放
// GC 头文件排到前面，让全局 GC 最后析构，确保其他全局变量都析构完毕，GC 可以安全退出
// 因为 GC 不仅包含内存的释放，也包含资源析构的功能
#undef  xuser
#define xuser mixc::powerful_cat
#include"configure/env.hpp"
#include"configure/platform.hpp"
#include"configure/switch.hpp"
#include"concurrency/thread.hpp"
#include"gc/private/gc_background.hpp"
#include"interface/seqptr.hpp"
#include"lang/cxx.hpp"
#include"macro/xinit.hpp"
#include"utils/memory.hpp"
#undef  xuser

#if xuse_mixc_rtos
#include"extern/rtos/private/rtos.cpp"
#endif

#include"concurrency/private/lock.cpp"
#include"concurrency/private/thread.cpp"
#include"concurrency/private/thread_self.cpp"
#include"chrono/private/now.cpp"
#include"instruction/private/isa.cpp"

// 待实现
#if xuse_mixc_rtos == 0
#include"io/private/dir.cpp"
#if not xis_windows
#include"io/private/event_poll.cpp"
#endif
#include"io/private/file.cpp"
#include"io/private/tty.cpp"
#include"macro/private/log.cpp"
#endif

#include"math/private/expe.cpp"
#include"math/private/ln.cpp"
#include"math/private/math.cpp"
#include"math/private/sqrt.cpp"
#include"math/private/trigo+.cpp"

// 待实现
#if xis_windows or xuse_mixc_rtos
#else
#include"concurrency/private/process.cpp"
#include"net/private/base_net.cpp"
#include"net/private/dns.cpp"
#include"net/private/tcp.cpp"
#include"net/private/udp.cpp"
#endif

#include"test/helper.cpp"
#include"utils/private/memory.cpp"

// #include"draft/gui_seed.hpp"
#undef  xuser
#define xuser mixc::powerful_cat

#if xuse_mixc_rtos
    extern "C" void x_main(){
        xuser::init_list_execute();
    }

#else
    int main(int argc, char ** argv){
        auto         bytes  = xsizeof(xuser::c08) * argc;
        xuser::c08 * buffer = xuser::memory::alloc<xuser::c08>(bytes);
        xuser::env::c::argc = argc;
        xuser::env::c::argv = argv;

        for(uxx i = 0; i < uxx(argc); i++){
            buffer[i]       = argv[i];
        }

        xnew(voidp(& xuser::env::args)) xuser::seqptr<xuser::c08>(buffer, argc);
        xuser::init_list_execute();
        xuser::memory::free(buffer, bytes);
        return 0;
    }
#endif

#endif // xfor_vscode_hint
